home *** CD-ROM | disk | FTP | other *** search
/ The Very Best of Atari Inside / The Very Best of Atari Inside 1.iso / sharew / dtp / imagelab / doku / img2b_w.doc < prev    next >
Encoding:
Text File  |  1993-04-28  |  14.3 KB  |  383 lines

  1.  
  2.                   IMG2B_W
  3.     -------------------------------------------------------------
  4.  
  5.      Ein Programm zur Umsetzung von Bildern im IMG-Format in das
  6.             ImageLab B&W256-Format
  7.  
  8.  
  9.  
  10.                   Übersicht
  11.                ===============
  12.  
  13.         0. Bedienung des Programms
  14.  
  15.         1. Das IMG-Format
  16.           1.0 Einleitung
  17.           1.1 Umsetzungsverfahren
  18.           1.2 Probleme
  19.  
  20.         2. Das XIMG-Verfahren
  21.           2.0 Einleitung
  22.           2.1 Umsetzungsverfahren
  23.           2.2 Probleme
  24.  
  25.         Anhang
  26.           Bibliographie
  27.  
  28.                 ***
  29.  
  30.  
  31.  
  32.     0. Bedienung des Programms
  33. =====================================================================
  34.  
  35.     Das Programm kann grundsätzlich zwar in jeder Auflösung laufen,
  36.     jedoch sollte sie 640x400 nicht unterschreiten, da dann einige
  37.     Dialogboxen eventuell nicht auf den Bildschirm passen.
  38.  
  39.     Ansonsten ist es denkbar einfach zu bedienen, wenn man schon
  40.     mal ein paar ST-Programme benutzt hat.
  41.     Da bei jedem Programmstart maximal ein Bild konvertiert wird,
  42.     folgt man einfach der Programmführung:
  43.  
  44.     1. Beim Programmstart erscheint eine Infobox, die nur be-
  45.        stätigt werden braucht (RETURN drücken oder Mausklick in
  46.        die Box oder den OK-Button).
  47.  
  48.     2. Es erscheint die bekannte ST-Datei-Auswahl-Box. Hier bitte
  49.        die IMG-Datei auswählen, die konvertiert werden soll.
  50.        (Abbruch verläßt das Programm)
  51.  
  52.     3. Handelt es sich bei dem Bild um ein monochromes Bild, wird
  53.        das Bild dargestellt, wenn der Monitor ebenfalls monochrom
  54.        ist.
  55.        Es erscheint in jedem Fall eine Dialog-Box, in der die
  56.        Größe der Umsetzungsmatrix gewählt werden kann. Näheres
  57.        hierzu bitte unter 1.1 nachlesen.
  58.        Ein Mausklick auf den "Pfeil nach oben"-Button vergrößert
  59.        das Raster auf maximal 16x16; ein Klick auf den "Pfeil nach
  60.        unten"-Button verkleinert das Raster auf minimal 1x1.
  61.        Im unteren Teil der Maske wird die Größe des Zielbildes und
  62.        die Anzahl der Graustufen angezeigt, die sich aus der ge-
  63.        wählten Rastergröße ergibt.
  64.        OK verzweigt zur Datei-Auswahl (Punkt 5); Abbruch verläßt das
  65.        Programm.
  66.  
  67.     4. Handelt es sich bei der gewählten Datei um ein Bild im XIMG-
  68.        Format erscheint die erwähnte Dialogbox nicht.
  69.  
  70.     5. Die Datei-Auswahl-Box wird aufgeblendet und wartet auf die
  71.        Wahl des Names der Zieldatei. OK startet das Umsetzungs-
  72.        Verfahren, Abbruch verläßt das Progamm.
  73.  
  74.     6. Das Fortschreiten der Umsetzung wird in einer Box graphisch
  75.        dargestellt.
  76.  
  77.     7. Das Programm beendet sich und kehrt zum Desktop zurück.
  78.  
  79.  
  80.  
  81.  
  82.     1. Das IMG-Format
  83. =====================================================================
  84.  
  85.     1.0 Einleitung
  86.  
  87.     Das IMG-Format ist eine Form der Bildkompression, die im 
  88.     Atari-Universum recht weit verbreitet ist, da es einige
  89.     wichtige Vorteile gegenüber anderen Kompressionsverfahren
  90.     bietet.
  91.     Zum einen es nicht an ein bestimmtes Graphik-Programm ge-
  92.     bunden (hier hat fast jedes Programm immer noch sein eigenes
  93.     Format, das von anderen Programmen nicht immer verarbeitet
  94.     werden kann), zum anderen ist es eine der wenigen Möglich-
  95.     keiten Bilder beliebiger Größe abzuspeichern.
  96.  
  97.     Das Format selbst besteht zunächst aus einem Kopf von
  98.     mindestens acht 16-Bit-Worten im 68000-Format:
  99.  
  100.        Wort  0: Version der IMG-Datei
  101.        Wort  1: die Länge des Kopfes der IMG-Datei in 
  102.             16-Bit-Worten
  103.        Wort  2: die Anzahl der Planes (Farbebenen) der
  104.             IMG-Datei; entspricht der Anzahl von Bits
  105.             pro Pixel, d.h. eins für Schwarz/Weiß-
  106.             Bilder und z.B. vier für Bilder mit 16 
  107.             Farben.
  108.        Wort  3: interne Verwendung bei Dekompression
  109.        Wort  4: Breite eines Pixels in Micrometern
  110.        Wort  5: Höhe eines Pixels in Micrometern
  111.        Wort  6: Breite des Bildes in Pixeln
  112.        Wort  7: Höhe des Bildes in Pixeln
  113.  
  114.     Da ich an dieser Stelle nicht auf die Komprimierung selbst
  115.     eingehen will, da sie zum einen sehr komplex, zum anderen
  116.     für die Nutzung des Programms nicht weiter wichtig ist, soll
  117.     hier das dritte Wort des Kopfsatzes nicht weiter erläutert
  118.     werden.
  119.     Wen das Verfahren interessiert, der findet eine ausführliche
  120.     Beschreibung in [GEI0].
  121.  
  122.     Wie man leicht erkennen kann, sind die Worte 2, 6 und 7 die
  123.     wichtigsten zur weiteren Verarbeitung des Bildes, da sie
  124.     die Größe festlegen. Weil die Verbreitung des IMG-Verfahrens
  125.     für Schwarz-Weiß-Bilder weit größer ist als für Farbbilder
  126.     und ImageLab nur Schwarz-Weiß-Bilder verarbeitet, gehen wir
  127.     zunächst davon aus, daß wir es mit einem monochromen Bild
  128.     zu tun haben (Wort 2 also eins ist).
  129.  
  130.  
  131.     1.1 Umsetzung
  132.  
  133.     Die Bilder, die von ImageLab verarbeitet werden, sind zwar
  134.     auch Schwarz-Weiß, haben aber anstatt zwei Graustufen (näm-
  135.     lich genau Schwarz und Weiß) bis zu 256 verschiedene.
  136.     Man muß also versuchen, aus den zwei vorhandenen Werten,
  137.     eine möglichst große Vielfalt von Werten zu konstruieren
  138.     und den Bildinhalt trotzdem möglichst originalgetreu zu
  139.     übernehmen.
  140.     In den meisten Fällen ist dies gar nicht so schwierig. Viele
  141.     Programme benutzen eine bestimmte Rasterung um im berühmten
  142.     Monochrommodus des ST dem Auge eine größere Anzahl von Grau-
  143.     stufen vorzumachen als tatsächlich vorhanden ist.
  144.     Betrachtet man z.B. statt eines einzelnen Punktes eine Gruppe
  145.     von 2x2 Punkten, so kann man anstatt zwei Graustufen fünf
  146.     unterscheiden:
  147.  
  148.         -----    -----    -----    -----    -----
  149.        |  |  |  |  |XX|  |  |XX|  |XX|XX|  |XX|XX|
  150.        |--|--|  |--|--|  |--|--|  |--|--|  |--|--|
  151.        |  |  |  |  |  |  |XX|  |  |XX|  |  |XX|XX|
  152.         -----    -----    -----    -----    -----
  153.           0           1        2        3        4
  154.  
  155.     0 = kein Punkt gesetzt, 1 = ein Punkt gesetzt .. 4 = alle
  156.     vier Punkte im 2x2 Raster gesetzt.
  157.  
  158.     Diese Eigenschaft eines Bildes kann man sich bei der Um-
  159.     setzung zu Nutze machen, indem man jeweils vier Punkte des
  160.     Originalbildes zu einem Punkt im neuen ImageLab-Bild zu-
  161.     sammenfaßt und so ein Bild mit fünf Graustufen erhält.
  162.     Dieses Bild ist natürlich kleiner als das Originalbild -
  163.     ein Bild der Größe 320x200 (64000 Pixel) schrumpft um Faktor
  164.     vier auf 160x100 (16000 Pixel).
  165.  
  166.     Fünf Graustufen sind natürlich nicht besonders viel, was
  167.     die Bildverarbeitung betrifft sogar geradezu lächerlich.
  168.     ImageLab ist für eine Weiterverarbeitung auf eine größt-
  169.     mögliche Anzahl von Graustufen angewiesen.
  170.     Deshalb bietet IMG2B_W ab Version 1.4 die Möglichkeit die
  171.     Größe des Rasters und damit die Anzahl der Graustufen bei
  172.     jedem Bild individuell festzulegen.
  173.     Ein guter Startwert ist das 8x8-Raster, das 65 Graustufen
  174.     umsetzt. Der Trade-off zwischen Anzahl der Graustufen und
  175.     Größe und damit auch Detailtreue des Zielbildes ist offen-
  176.     sichtlich. Aber hier sind der Experimentierfreudigkeit keine
  177.     Grenzen gesetzt: Einfach mal ein Bild mit verschiedenen Ein-
  178.     stellungen abspeichern, und dann in ImageLab laden um die
  179.     Unterschiede zu sehen und die optimale Lösung zu finden.
  180.  
  181.  
  182.     1.2 Probleme
  183.  
  184.     Kein Programm ohne irgendwelche Einschränkungen...
  185.  
  186.     - IMG2B_W ist geschwindigkeits- nicht speicherplatzoptimiert.
  187.       Dies sollte allerdings normalerweise kein allzu großes 
  188.       Problem darstellen.
  189.       Eins meiner Testbilder ist ein Ausschnitt aus einem ein-
  190.       gescannten Bild mit einer Größe von 1092x1278. Das ge-
  191.       packte IMG-Bild ist 97757 Byte groß, das ungepackte Bild 
  192.       nimmt etwa 170 KByte in Anspruch, eine 8x8-Umsetzung nur
  193.       weitere 21 KByte.
  194.       Von einer zu kleinen Rasterung sollte allerdings Abstand
  195.       genommen werden: ein 2x2-Umsetzung benötigt ca. 340 KB,
  196.       eine 1x1-Umsetzung etwa 1.33 MByte. Diese ist dann auch
  197.       noch besonders sinnlos, da sie nur zwei Graustufen besitzt
  198.       und ImageLab damit praktisch kaum etwas anfangen kann.
  199.       Die Alternative, das Bild nicht im Speicher umzusetzen,
  200.       sondern direkt auf den Datenträger zu schreiben, wurde
  201.       nach einigen Tests aufgegeben, da sich das Speichern hier-
  202.       bei um einen zweistelligen Faktor verlangsamt und statt
  203.       einiger Sekunden mehrere Minuten in Anspruch nimmt.
  204.  
  205.     - Aus der Beschreibung des IMG-Kopfsatzes kann man ersehen,
  206.       daß es keine Möglichkeit gibt zu erkennen, ob tatsächlich
  207.       ein IMG-Bild vorliegt. Ist die Datei, die man versucht
  208.       zu laden keine gültige IMG-Datei oder eventuell unvoll-
  209.       ständig oder beschädigt, so kann das vom Programm nicht
  210.       abgefangen werden.
  211.  
  212.     - Die Worte 0, 4 und 5 des Kopfsatzes werden nicht ausge-
  213.       wertet.
  214.  
  215.     Das IMG-Format ist schon etwas älter. Zwar hat man bei der
  216.     Festlegung an Erweiterungen gedacht (die Länge des Kopfsatzes
  217.     ist flexibel), aber einige wichtige Voraussetzungen für die
  218.     Nutzung als modernes Bildkompressionsverfahren fehlen doch.
  219.     So ist es z.B. möglich Farbbilder zu verarbeiten, wenn das
  220.     Bild mehrere Farbebenen (Planes) besitzt. Zwar ist die Be-
  221.     nutzung von Planes mit einer zugehörigen Farbtabelle auf dem
  222.     ST durchaus üblich, doch es fehlt leider eine Beschreibung,
  223.     wie und wo die Belegung der Farbtabelle abzuspeichern ist.
  224.     Und die Zeit der fixen Farbtabellen liegt nun wirklich schon
  225.     seit längerer Zeit hinter uns.
  226.     Dies bringt mich zu folgendem Punkt...
  227.  
  228.  
  229.  
  230.  
  231.     2. Das XIMG-Format
  232. =====================================================================
  233.  
  234.     2.0 Einleitung
  235.  
  236.     Das XIMG-Format ist der Versuch dem IMG-Standard die fehl-
  237.     ende Farbe zu geben...
  238.     Hierbei wird der IMG-Kopf um einen XIMG-Teil erweitert, in
  239.     dem die Farbtabelle des Ursprungsbildes abgelegt wird.
  240.     Die folgende Liste versteht sich also als Fortsetzung von
  241.     der Kopfsatz-Beschreibung unter 1.0:
  242.  
  243.        Wort  8: muß den Wert 22601 (0x5849) enthalten
  244.        Wort  9: muß den Wert 19783 (0x4d47) enthalten
  245.             Worte 8 und 9 dienen zur Identifikation des
  246.             XIMG-Teil des Kopfsatzes. Liest man die beiden
  247.             Worte byteweise, so ergibt sich:
  248.             0x58 0x49 0x4d 0x47 == 'X' 'I' 'M' 'G'
  249.        Wort 10: Farbmodell 0..3 (s.u.)
  250.        Wort 11: Farbe 0 - Anteil 0
  251.        Wort 12: Farbe 0 - Anteil 1
  252.        Wort 13: Farbe 0 - Anteil 2
  253.        Wort 14: Farbe 1 - Anteil 0
  254.        Wort 15: Farbe 1 - Anteil 1
  255.        Wort 16: Farbe 1 - Anteil 2
  256.            :        :
  257.            :        :
  258.        Wort n-3:Farbe f - Anteil 0
  259.        Wort n-2:Farbe f - Anteil 1
  260.        Wort n-1:Farbe f - Anteil 2
  261.  
  262.     Dabei entspricht n dem Wort 1 des Kopfsatzes; die Anzahl
  263.     der Farben f ergibt sich aus Wort 2: 
  264.         2^(Anzahl der Ebenen) = Anzahl der Farben.
  265.  
  266.     Um das Format so flexibel wie möglich zu halten, hat man
  267.     sich nicht auf ein Farbmodell festgelegt. Auf dem ST setzen
  268.     sich die Farben aus einem Rot-, einem Grün- und einem Blau-
  269.     anteil zusammen. Nach den Anfangsbuchstaben RGB-Modell ge-
  270.     nannt.
  271.     Da Farbmodelle wieder ein Thema für sich sind, sollen die
  272.     anderen nur kurz erwähnt werden:
  273.          CYM    - nach cyan, yellow, magenta;
  274.               man sieht, daß RGB eigentlich für red, green,
  275.               blue steht;
  276.          HLS    - Hue, Lightness, Saturation;
  277.          Pantone- Pantone-Verfahren
  278.  
  279.     Die Farbmodelle werden in [FOL0] näher betrachtet. Eine
  280.     Beschreibung des XIMG-Verfahrens findet man in [GEI1].
  281.  
  282.  
  283.     2.1 Umsetzung
  284.  
  285.     Bei der Umsetzung eines Bildes, das im XIMG-Format vor-
  286.     liegt, wird ein Pixel im Originalbild in einen Pixel im
  287.     Zielbild überführt. Es gibt hier keine Umsetzungsmatrix
  288.     und so auch keine Möglichkeit die Konvertierung zu beein-
  289.     flussen.
  290.  
  291.     Als Beispiel soll ein Bild betrachtet werden, daß mit dem
  292.     RGB-Modell abgespeichert wurde. Nach dem Einlesen wird
  293.     zunächst die Farbtabelle konvertiert. Dabei muß jeder Farbe,
  294.     zu der die drei Anteile Rot, Grün und Blau vorliegen, ein
  295.     Grauwert zugeordnet werden.
  296.     Dies ist nicht so trivial, wie man vielleicht denkt, da von
  297.     den drei Farben nicht dieselbe Helligkeit ausgeht. Ein
  298.     Monitor/Fernseher, der ein gleichmäßig blaues Bild ohne Rot-
  299.     und Grünanteil zeigt, strahlt wesentlich weniger Helligkeit 
  300.     ab, als einer, der ein grünes Bild zeigt.
  301.     Deshalb kommt bei der Umsetzung das YIQ-Verfahren zum Ein-
  302.     satz ([FOL0]). YIQ ist ein weiteres Farbmodell, das in den
  303.     USA zur Übertragung von Fernsehsignalen genutzt wird. Das
  304.     ursprüngliche RGB-Signal wird in ein YIQ-Signal gewandelt,
  305.     bei dem die Helligkeitsinformation in der Y-Komponente und
  306.     die Farbinformation in der I- und Q-Komponente steckt.
  307.     Kommt das Signal in einem Farbfernsehgerät an, wird es wieder
  308.     in ein RGB-Signal gewandelt. Kommt es jedoch in einem S/W-
  309.     Gerät an, wird nur die Y-Komponente gezeigt.
  310.     Alles, was man tun muß, ist also, die Y-Komponente zu bilden,
  311.     die bei der Konvertierung von RGB nach YIQ anfällt und man
  312.     hat eine Helligkeitsstufe, die der der ursprünglichen Farbe
  313.     entspricht.
  314.  
  315.     Die Formel dafür lautet:
  316.  
  317.         Y  =   0.299 * R  +   0.587 * G  +   0.114 * B
  318.  
  319.     Um das Programm nicht mit überflüssiger Fließkommazahlen-
  320.     Berechung zu überlasten, führe ich diese Berechnung mit
  321.     Integerzahlen durch. Dies führt zu einer geringfügigen
  322.     Abweichung dieser Formel, nämlich:
  323.  
  324.         Y' =  0.2987 * R  +  0.5859 * G  +  0.1149 * B
  325.  
  326.     Die Abweichung ist aber selbst bei maximaler Intensiät 
  327.     kleiner als 0.29 Graustufen, sollte also ertragbar sein.
  328.  
  329.     Für jeden Punkt im Bild wird also bei der Umsetzung die
  330.     Farbe in eine Helligkeitsstufe gewandelt. Die Anzahl der
  331.     Graustufen des Zielbildes entspricht folglich der Anzahl
  332.     der Farben des Originalbildes.
  333.  
  334.  
  335.     2.2 Probleme
  336.  
  337.     - Die Umsetzung wurde für Bilder getestet, die im RGB-
  338.       Format vorliegen. Andere Bilder hatte ich nicht zur Ver-
  339.       fügung und ich weiß auch nicht, warum jemand ein anderes
  340.       Verfahren auf dem ST benutzen sollte, aber ausschließen
  341.       kann man das natürlich nie.
  342.       Das Programm funktioniert rein theoretisch auch für das
  343.       CYM-Modell, auf der Grundlage
  344.             R = 1 - C;   G = 1 - M;   B = 1 - Y;
  345.       Aus Mangel an Daten habe ich das aber, wie erwähnt, nie
  346.       testen können.
  347.       Das HSL-Modell wird z.Z. nicht unterstützt, da mir die
  348.       Umsetzung zu ausfwendig erschien und ich keinen kenne,
  349.       der es benutzt.
  350.       Für das Pantone-Verfahren fehlen mir die entsprechenden
  351.       Daten. Allerdings kann ich mir auch hierfür nicht vor-
  352.       stellen, daß es sehr viele Leute vermissen werden.
  353.  
  354.     - Es werden nur Farbtabellen bis maximal 256 Farben unter-
  355.       stützt.
  356.  
  357.  
  358.  
  359.     Anhang
  360. =====================================================================
  361.  
  362.  
  363.     Bibliographie
  364.  
  365.     FOL0    Foley, James D. [et al.]
  366.         "Computer Graphics, principles and practice"
  367.         Addison-Wesley, 1990
  368.  
  369.     GEI0    Geiß, Jürgen; Geiß, Dieter
  370.         "Softwareentwicklung auf dem Atari ST"
  371.         Hüthig, 1987
  372.  
  373.     GEI1    Geiß, Dieter; Geiß, Jürgen
  374.         "Vom Anfänger zum GEM-Profi;
  375.         Perfekte Programmierung auf Atari ST und IBM-PC"
  376.         Hüthig, 1991
  377.  
  378.  
  379.  
  380.  
  381.  
  382.    SvB, 23. Januar 1993
  383.